package com.ruoyi.system.mapper;

import java.util.List;

import com.ruoyi.system.domain.WhOrder;
import com.ruoyi.system.domain.WhOrderNo;
import com.ruoyi.system.domain.params.CustomerOrderListParams;
import com.ruoyi.system.domain.params.OrderListParams;
import com.ruoyi.system.domain.vo.*;
import org.apache.ibatis.annotations.Param;

/**
 * 客户订单Mapper接口
 *
 * @author ruoyi
 * @date 2023-02-26
 */
public interface WhOrderMapper {

    /**
     * 查询客户订单
     *
     * @param id 客户订单主键
     * @return 客户订单
     */
    public WhOrder selectWhOrderById(Integer id);

    public WhOrder selectWhOrderByOrderNo(String orderNo);

    /**
     * 获取订单总数量
     * @return
     */
    long getOrderCountNum();

    /**
     * 获取订单详情（常规数据）
     * @param id 订单id
     * @return
     */
    OrderInfoVo getOrderInfoById(Integer id);

    /**
     * 获取编辑订单详情
     * @param id
     * @return
     */
    public EditOrderInfoVo selectEditOrderById(Integer id);

    /**
     * 查询客户订单列表
     *
     * @param params 客户订单
     * @return 客户订单集合
     */
    public List<OrderListVo> selectWhOrderList(OrderListParams params);

    /**
     * 新增客户订单
     *
     * @param whOrder 客户订单
     * @return 结果
     */
    public int insertWhOrder(WhOrder whOrder);

    int createOrderNo(WhOrderNo whOrderNo);

    /**
     * 修改客户订单
     *
     * @param whOrder 客户订单
     * @return 结果
     */
    public int updateWhOrder(WhOrder whOrder);

    /**
     * 删除客户订单
     *
     * @param id 客户订单主键
     * @return 结果
     */
    public int deleteWhOrderById(Integer id);

    /**
     * 批量删除客户订单
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteWhOrderByIds(Integer[] ids);

    /**
     * 客户获取订单列表
     * @param params
     * @return
     */
    List<CustomerOrderList> findCustomerOrderList(@Param("params") CustomerOrderListParams params);

    /**
     * 仓管端获取订单列表
     * @param keyword
     * @return
     */
    List<ManagerOrderListVo> findManagerOrderList(@Param("keyword") String keyword);
}
